package com.gengzp.mq.common.utils;

import org.apache.commons.lang3.StringUtils;

import java.text.SimpleDateFormat;
import java.util.Date;

import static com.gengzp.mq.common.constants.GengzpMqDateFormatConstants.YMD;
import static com.gengzp.mq.common.constants.GengzpMqDateFormatConstants.YMD_HMS;

/**
 * @ClassName GengzpMqDateUtils
 * @Description 消息队列模块时间处理工具类
 * @Author gengzp
 * @Date 2025/6/8 19:53
 */
public class GengzpMqDateUtils {

    private static final SimpleDateFormat SDF_YMD = new SimpleDateFormat(YMD);
    private static final SimpleDateFormat SDF_YMD_HMS = new SimpleDateFormat(YMD_HMS);

    private GengzpMqDateUtils() {
    }

    /**
     * 转换日期为字符串
     *
     * @param date 日期
     * @return 字符串 yyyy-MM-dd
     */
    public static String Date2String(Date date) {
        return SDF_YMD.format(date);
    }

    /**
     * 转换日期为指定格式字符串
     *
     * @param date   日期
     * @param format 格式
     * @return 字符串
     */
    public static String Date2String(Date date, String format) {
        return getSimpleDateFormat(format).format(date);
    }

    /**
     * 将字符串转为时间对象
     *
     * @param dateStr 字符串
     * @param format  格式
     * @return 时间
     */
    public static Date String2Date(String dateStr, String format) {
        try {
            return getSimpleDateFormat(format).parse(dateStr);
        } catch (Exception e) {
            return null;
        }
    }

    private static SimpleDateFormat getSimpleDateFormat(String format) {
        if (StringUtils.equals(format, YMD)) {
            return SDF_YMD;
        }
        if (StringUtils.equals(format, YMD_HMS)) {
            return SDF_YMD_HMS;
        }
        return new SimpleDateFormat(format);
    }

}
